/******************************************************************************
 * (C) 671643387@qq.com
 */

#ifndef APPLE_SESSION_H
#define APPLE_SESSION_H


namespace Shared {
    namespace Net {

        /**
         * 网络线程
         */
        class Thread;

        /**
         * 网络会话
         */
        class Session {
        public:
            Session(void);
            virtual ~Session(void);

            /**
             * 获取会话编号
             * @return
             */
            int id(void) { return _id; }

        public:
            /**
             * 绑定会话到网络线程
             * @param thread
             */
            virtual void bindThread(Thread* thread);

            /**
             * 解除绑定
             * @param thread
             */
            virtual void unbindThread(void) = 0;

        protected:
            /**
             * 设置会话编号
             * @param id
             */
            void setId(int id) { _id = id; }

            /**
             * 获取会话绑定的线程
             * @return
             */
            Thread* ownerThread(void) { return _ownerThread; }

        private:
            int _id;
            Thread* _ownerThread;
        };

    }
}


#endif //APPLE_SESSION_H
